home *** CD-ROM | disk | FTP | other *** search
/ This Disc Bytes! / Power Computing - The Disc 2 - This Disc Bytes.ISO / mac / CodeWarrior 7 Lite for 68K / MacOS Support / Headers / ANSI Headers / ptrdynarray < prev    next >
Text File  |  1995-08-02  |  4KB  |  116 lines

  1. // ptrdynarray standard header
  2. #ifndef _PTRDYNARRAY_
  3. #define _PTRDYNARRAY_
  4. #include <dynarray>
  5.  
  6. #if __MWERKS__
  7. #pragma options align=mac68k
  8. #pragma direct_destruction off
  9. #endif
  10.  
  11.   // template class ptrdynarray
  12. template<class _T> class ptrdynarray
  13.  : public dynarray<void *> {
  14. public:
  15.  ptrdynarray()
  16.   : dynarray<void *>() {}
  17.  ptrdynarray(size_t _N, capacity _C)
  18.   : dynarray<void *>(_N, _C) {}
  19.  ptrdynarray(const ptrdynarray<_T>& _X)
  20.   : dynarray<void *>(_X) {}
  21.  ptrdynarray(_T *_X, size_t _N = 1)
  22.   : dynarray<void *>((void *)_X, _N) {}
  23.  ptrdynarray(_T **_S, size_t _N = 1)
  24.   : dynarray<void *>((void **)_S, _N) {}
  25.  ptrdynarray<_T>& operator=(const ptrdynarray<_T>& _R)
  26.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  27.    operator=((const dynarray<void *>&)_R)); }
  28.  ptrdynarray<_T>& operator+=(const ptrdynarray<_T>& _R)
  29.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  30.    operator+=((const dynarray<void *>&)_R)); }
  31.  ptrdynarray<_T>& operator+=(_T *_R)
  32.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  33.    operator+=((void *)_R)); }
  34.  ptrdynarray<_T>& append(_T *_X, size_t _N = 1)
  35.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  36.    append((void *)_X, _N)); }
  37.  ptrdynarray<_T>& append(_T **_S, size_t _N = 1)
  38.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  39.    append((void **)_S, _N)); }
  40.  ptrdynarray<_T>& assign(_T *_X, size_t _N = 1)
  41.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  42.    assign((void *)_X, _N)); }
  43.  ptrdynarray<_T>& assign(_T **_S, size_t _N = 1)
  44.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  45.    assign((void **)_S, _N)); }
  46.  ptrdynarray<_T>& insert(size_t _P,
  47.   const ptrdynarray<_T>& _X)
  48.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  49.    insert(_P, (const dynarray<void *>&)_X)); }
  50.  ptrdynarray<_T>& insert(size_t _P, _T *_X, size_t _N = 1)
  51.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  52.    insert(_P, (void *)_X, _N)); }
  53.  ptrdynarray<_T>& insert(size_t _P, _T **_S, size_t _N = 1)
  54.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  55.    insert(_P, (void **)_S, _N)); }
  56.  ptrdynarray<_T>& remove(size_t _P = 0, size_t _N = NPOS)
  57.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  58.    remove(_P, _N)); }
  59.  ptrdynarray<_T>& sub_array(ptrdynarray<_T>& _X, size_t _P,
  60.   size_t _N = NPOS)
  61.   {return ((ptrdynarray<_T>&)dynarray<void *>::
  62.    sub_array(_X, _P, _N)); }
  63.  void swap(ptrdynarray<_T>& _X)
  64.   {dynarray<void *>::swap(_X); }
  65.  _T* get_at(size_t _P) const
  66.   {return ((_T *)dynarray<void *>::get_at(_P)); }
  67.  void put_at(size_t _P, _T *_X)
  68.   {dynarray<void *>::put_at(_P, (void *)_X); }
  69.  _T *& operator[](size_t _P)
  70.   {return ((_T *&)dynarray<void *>::operator[](_P)); }
  71.  _T *const& operator[](size_t _P) const
  72.   {return ((_T *&)dynarray<void *>::operator[](_P)); }
  73.  _T **base()
  74.   {return ((_T **)dynarray<void *>::base()); }
  75.  const _T **base() const
  76.   {return ((const _T **)dynarray<void *>::base()); }
  77.  size_t length() const
  78.   {return (dynarray<void *>::length()); }
  79.  void resize(size_t _N)
  80.   {dynarray<void *>::resize(_N); }
  81.  void resize(size_t _N, _T *_X)
  82.   {dynarray<void *>::resize(_N, (void *)_X); }
  83.  size_t reserve() const
  84.   {return (dynarray<void *>::reserve()); }
  85.  void reserve(size_t _N)
  86.   {dynarray<void *>::reserve(_N); }
  87.  };
  88.   // template operators
  89. template<class _T> ptrdynarray<_T>
  90.  operator+(const ptrdynarray<_T>& _L,
  91.   const ptrdynarray<_T>& _R)
  92.  {return (ptrdynarray<_T>(_L) += _R); }
  93. template<class _T> ptrdynarray<_T>
  94.  operator+(const ptrdynarray<_T>& _L, _T *_R)
  95.  {return (ptrdynarray<_T>(_L) += _R); }
  96. template<class _T> ptrdynarray<_T>
  97.  operator+(_T *_L, const ptrdynarray<_T>& _R)
  98.  {return (ptrdynarray<_T>(_L) += _R); }
  99.  
  100. #if __MWERKS__
  101. #pragma options align=reset
  102. #pragma direct_destruction reset
  103. #endif
  104.  
  105. #endif
  106.  
  107. /*
  108.  * Copyright (c) 1994 by P.J. Plauger.  ALL RIGHTS RESERVED. 
  109.  * Consult your license regarding permissions and restrictions.
  110.  */
  111.  
  112. /* Change log:
  113.  *94Oct03 Version received from PlumHall
  114.  *94Oct07 Inserted MW changes.
  115.  */
  116.